
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009, Perry L Miller IV
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Include this in your Plugin.cpp file.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _USUL_PLUGINS_HELPER_FUNCTIONS_H_
#define _USUL_PLUGINS_HELPER_FUNCTIONS_H_

#include "Usul/Config/Config.h"
#include "Usul/Interfaces/IUnknown.h"
#include "Usul/Plugins/Manager.h"


///////////////////////////////////////////////////////////////////////////////
//
//  Return true if this library was compiled in debug mode.
//
///////////////////////////////////////////////////////////////////////////////

extern "C" bool usul_is_debug_build()
{
  #ifdef _DEBUG
    return true;
  #else
    return false;
  #endif
}


///////////////////////////////////////////////////////////////////////////////
//
//  Called when the library is loaded.
//
///////////////////////////////////////////////////////////////////////////////

#define USUL_PLUGIN_INITIALIZE(class_name) \
extern "C" void usul_plugin_initialize() \
{ \
  Usul::Plugins::Manager::instance().add ( Usul::Interfaces::IUnknown::QueryPtr ( new class_name ) ); \
}


///////////////////////////////////////////////////////////////////////////////
//
//  Called when the library is about to be released.
//
///////////////////////////////////////////////////////////////////////////////

extern "C" void usul_plugin_finalize()
{
}


#endif // _USUL_PLUGINS_HELPER_FUNCTIONS_H_
